package com.lihaogn.sell.service;

import com.lihaogn.sell.entity.Order;
import com.lihaogn.sell.entity.OrderDetail;
import com.lihaogn.sell.vo.ListVo;
import com.lihaogn.sell.vo.OrderDetailVo;
import com.lihaogn.sell.vo.OrderVo;
import com.lihaogn.sell.vo.SearchPageVo;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * @FileName: OrderService
 * @Description: TODO
 * @Author: lihao
 * @Date: 2019-05-17 14:11
 * @Version: 1.0
 */
public interface OrderService {

    // === 查询 ===

    /**
     * 根据条件查询订单信息
     * @param searchPageVo
     * @return
     */
    ListVo getOrderByCondition(SearchPageVo searchPageVo);

    /**
     * 根据order_id获取订单详情
     * @param orderId
     * @return
     */
    List<OrderDetailVo> getOrderDetailById(String orderId);

    /**
     * 查询所有订单信息
     * @param page
     * @param limit
     * @return
     */
    List<OrderVo> getAllOrder(String page, String limit);

    /**
     * 获取所有订单数目
     * @return
     */
    int getAllRowCount();

    // === 添加 ===

    /**
     * 添加一个订单信息
     * @param order
     * @return
     */
    int addOneOrder(Order order);

    /**
     * 添加一个订单详情信息
     * @param orderDetail
     * @return
     */
    int addOneOrderDetail(OrderDetail orderDetail);

    // === 更新 ===

    /**
     * 修改订单支付状态
     * @param orderId
     * @return
     */
    int changeOrderPayStatus(String orderId);

    /**
     * 更新order消费额
     * @param orderId
     * @param orderCost
     * @return
     */
    int changeOrder(String orderId, Double orderCost);

    /**
     * 更新订单评价信息
     * @param reviewMap
     * @return
     */
    int updataOrderItemScore(Map<String, Object> reviewMap);

    // === 删除 ===

    /**
     * 删除一个订单
     * @param orderId
     * @return
     */
    int deleteOneOrder(String orderId);

    /**
     * 批量删除订单
     * @param request
     * @return
     */
    int deleteMultiOrder(HttpServletRequest request);
}
